import smtplib  # 连接smtp服务
import time
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header

def send_email(report_file):
    # ------设置基础信息
    smtp_sever = 'smtp.163.com'  # 发送邮件的目标服务
    port = 465  # ssl服务端口

    send_emile = '15900047753@163.com'  # 发件人邮箱
    send_password = 'GATaY3fRa6KN3aHw'  # 授权码
    send_username = '蔡猫猫'  # 发件人用户名
    receive_emile = '15900047753@163.com'  # 收件人邮箱
    receive_emile_list = ['15900047753@163.com', '1064629909@qq.com']  # 多个收件人邮箱

    # --------邮件标题 收/发件人 发送时间 的设置
    msg = MIMEMultipart()  # 创建邮件对象
    msg['Subject'] = Header('20250529-邮件标题', 'utf-8').encode()  # 设置邮件主题

    # msg['From'] = Header('发件人<%s>' % send_emile)    # 设置发件人 错误的写法 ai说发件人不能有中文 改成下面的写法
    msg['From'] = f'{Header(send_username, "utf-8").encode()} <{send_emile}>'

    msg['To'] = Header("收件人<%s>" % receive_emile)  # 设置单个收件人
    # msg['To'] = Header(','.join(receive_emile_list), 'utf-8')     # 设置多个收件人

    # msg['date'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())  # #错误写法
    msg["Date"] = time.strftime("%a,%d %b %Y %H:%M:%S %z")  # 日期标准格式

    # -------邮件正文的设置
    # html格式 'allure生成的测试报告html文件'   # 邮件正文的内容
    try:
        with open(report_file, 'r', encoding='utf-8') as f:
            html_content = f.read()
        mail_body = MIMEText(html_content, 'html', 'utf-8')   # 创建邮件正文内容的对象 allure生成的测试报告是html格式
        msg.attach(mail_body)   # 写入邮件正文中
    except Exception as e:
        print(f"html文件加载失败！{e}")

    # # 纯文本格式
    # text_cont = "纯文本内容纯文本内容纯文本内容纯文本内容纯文本内容"
    # mail_text = MIMEText(text_cont, 'plain', 'utf-8')  # 创建邮件正文内容的对象 纯文本格式
    # msg.attach(mail_text)


    # 图片格式
    # image_file = open(r'C:\Users\Administrator\Desktop\图片\[单次]家庭保洁.png', 'rb').read()
    # mail_image = MIMEImage(image_file)
    # mail_image.add_header('Content-ID', '<image1>')
    # # 如果不加下面的代码 收件人那边会出现乱码 图片下载也不可用
    # mail_image['Content_Disposition'] = 'attachment; filename="image.png'
    # msg.attach(mail_image)

    # 附件
    # att_file = r'D:\python项目\pycarm-PJ_2\report\index.html'
    # mail_att = MIMEApplication(att_file)
    # mail_att.add_header('Content_Disposition', 'attachment')
    # mail_att["Content_Disposition"] = 'attachment; filename="index.html"'

    try:
        # smtp = smtplib.SMTP()  # 创建连接服务器的对象
        # smtp.connect(smtp_sever)  # 连接服务器
        # smtp.login(send_emile, send_password)  # 使用邮箱号和密码登录邮箱 邮箱需开启pop3-smtp
        # smtp.sendmail(send_emile, receive_emile, msg.as_string())    # 发送邮件 发件人邮箱 收件人邮箱 发送内容
        # smtp.quit()  # 退出登录
        # 使用加密连接
        with smtplib.SMTP_SSL(smtp_sever, port) as smtp:
            smtp.login(send_emile, send_password)
            smtp.sendmail(send_emile, receive_emile, msg.as_string())  # 发送邮件 发件人邮箱 收件人邮箱 发送内容
        print("邮件发送成功！")
    except Exception as e:
        print(f"邮件发送失败！{e}")



